// 状态state 应该是一个对象
// 就想data一样
// 仓库里面存储了各种状态叫做state
// 这些仓库里面的状态数据，在任意一个组件内部都可以被调用
export const state = () => ({
  // 采用接口返回的数据结构
  userInfo: {
    token: '',
    user: {}
  }
})

// 如果需要修改状态数据，必须先定义修改方法，声明 mutations
export const mutations = {
  // 这里每个属性都是一个函数
  setUserInfo(state, data) {
    // mutation里面可以接受两个参数
    // 第一个是 state 当前仓库的数据本身
    // 第二个是调用时传过来的参数
    // 如果我这里希望外面调用时进来的数据
    // 修改当前状态的userInfo
    state.userInfo = data
  }
}

export const actions = {
  // 登录的异步请求
  //  acitons函数可以接收两个参数
  //   一个是store的本身
  // 一个是外部调用时额外的数据
  login({
    commit
  }, data) {
    return this.$axios({
      url: "/accounts/login",
      method: "POST",
      data
    }).then(res => {
      console.log("登录的返回结果", res);
      commit('setUserInfo', res.data);
      return res;
    });
  },

  register({commit}, data) {
    commit('setUserInfo', data);
  }
}
